56624a200ddc511a15026ab4a5ad42d4aab88b9f,GeneticRiskScoreCalculator/src/main/java/nl/systemsgenetics/simplegeneticriskscorecalculator/CalculateSimpleGeneticRiskScore.java,CalculateSimpleGeneticRiskScore,calculate,#RandomAccessGenotypeData#HashMap#File#number#number#boolean#,34

Before Change


                                    
                                    double or = riskE.getOr();
                                    int direction = -1;
                                    if (!(riskE.getAllele().equals(var1.getRefAllele().toString()) || riskE.getAllele().equals(var1.getRefAllele().getComplement().toString()))) {
                                        direction = 1;
                                    }

After Change


                HashSet<String> excludeList = new HashSet<String>();
//Here we need to change the loop.
                for (double pVal : pValueThreshold){
                    String key = "_P" + pVal;
                    THashMap<String, ArrayList<RiskEntry>> riskScorePheno2 = riskScorePheno.getValue().get(key);
                    String NameOfEntry = riskScorePheno.getKey() + key;
                    int rowNr = scores.getHashRows().get(NameOfEntry);
                    try {
                        TextFile out = null;
                        if (debugMode) {
                            System.out.println(NameOfEntry);

                            out = new TextFile(outputFolder + File.separator + NameOfEntry + "Chr" + chrOrder[counter] + ".log", TextFile.W);

                            out.write("SNPs used for GRS calculation:\n");
                        }
                        int nrSNPs = 0;

//                        System.out.println("Processing chromosome:\t" + chrOrder[counter]);
                        if (riskScorePheno2.containsKey(chrOrder[counter])) {

                            ArrayList<RiskEntry> valueE2 = riskScorePheno2.get(chrOrder[counter]);

                            int nrSNPsThisChr = valueE2.size();
                            boolean[] excludeSNPs = new boolean[nrSNPsThisChr];

                            //Get the original entries back, so we are sure we dont need to do to many look ups.
                            if (excludeList.size() > 0) {
                                for (int snp = 0; snp < nrSNPsThisChr; snp++) {
                                    if (excludeList.contains(valueE2.get(snp).getRsName())) {
                                        excludeSNPs[snp] = true;
                                    }
                                }
                            }

                            //Actual scoring.
                            for (int snp = 0; snp < nrSNPsThisChr; snp++) {
                                if (!excludeSNPs[snp]) {
                                    RiskEntry riskE = valueE2.get(snp);
                                    //System.out.println(snpID + "\t" + c + "\t" + chrPos + "\t" + object.doubleValue);
                                    GeneticVariant var1 = genotypeData.getSnpVariantByPos(riskE.getChr(), riskE.getPos());
                                    //Check if at least 75% of the sampels have information for the SNP otherwise it is removed by default.
                                    if (var1.getCallRate() < 0.75) {
                                        excludeSNPs[snp] = true;
                                        excludeList.add(riskE.getRsName());
                                        continue;
                                    }
                                    
                                    if (debugMode) {
                                        out.write(riskE.InfoToString() + "\n");
                                    }
                                    
                                    double or = riskE.getOr();
                                    int direction = -1;
                                    if (!(riskE.getAllele()==(var1.getRefAllele().getAlleleAsSnp()) || riskE.getAllele() == (var1.getRefAllele().getComplement().getAlleleAsSnp()))) {
                                        direction = 1;
                                    }